float4x4 World : register(c0);
float4x4 WorldInverseTranspose : register(c4);
float4x4 View : register(c8);
float4x4 Projection : register(c12);

void VSMain(
	float3 iPosition : POSITION0,
	float3 iNormal : NORMAL0,
	float2 iTexCoord : TEXCOORD0,

	out float4 oPositionHS : POSITION0,
	out float3 oPosition : TEXCOORD0,
	out float3 oNormal : TEXCOORD1,
	out float2 oTexCoord : TEXCOORD2 )
{
	float3 p = mul(float4(iPosition, 1), World);
	float3 n = mul(float4(iNormal, 0), WorldInverseTranspose);

	oPositionHS = mul(float4(iPosition, 1), mul(mul(World, View), Projection));
	oPosition = p;
	oNormal = n;
	oTexCoord = iTexCoord;
}